
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2002, John K. Grant and Perry L. Miller IV.
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Base functor class for analog input.
//
///////////////////////////////////////////////////////////////////////////////

#include "Interaction/Input/AnalogInput.h"


using namespace Usul::Functors::Interaction::Input;


///////////////////////////////////////////////////////////////////////////////
//
//  Default constructor.
//
///////////////////////////////////////////////////////////////////////////////

AnalogInput::AnalogInput ( Unknown *caller, const std::string &name ) : 
  BaseClass ( caller, name ),
  _value ( 0 ),
  _range ( -1, 1 )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Copy constructor.
//
///////////////////////////////////////////////////////////////////////////////

AnalogInput::AnalogInput ( const AnalogInput &a ) : BaseClass ( a ),
  _value ( a._value ),
  _range ( a._range )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Destructor.
//
///////////////////////////////////////////////////////////////////////////////

AnalogInput::~AnalogInput()
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the range.
//
///////////////////////////////////////////////////////////////////////////////

void AnalogInput::range ( const AnalogInput::Vec2 &v )
{
  Guard guard ( this->mutex() );
  _range = v;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the range.
//
///////////////////////////////////////////////////////////////////////////////

AnalogInput::Vec2 AnalogInput::range() const
{
  Guard guard ( this->mutex() );
  return Vec2 ( _range );
}
